package com.zhy.controller;

import com.zhy.anno.MyAnnotation4Swagger;
import com.zhy.entity.MyEntity;
import io.swagger.annotations.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;

/*
* 需要考虑的前端问题
* 页面中会嵌入多个form表单
* 或者是超链接 a 标记
* 或者是异步请求ajax
* 或者是发起请求访问的地址path
* 或者是请求方式get/post
*/

/*
 * @Api - 描述当前类型生成帮助文档的信息
 *   属性 -
 *      - tags : 给当前类型定义别名，可以有多个。定义了几个别名，在ui视图中就显示几个控制器访问菜单。
 *      - description : 给当前文档提供文字描述信息。
 */
@RestController
@RequestMapping("/swagger")
@Api(tags = {"MyController","张昊宇的Swagger学习控制器"},description = "测试API类型描述信息")
public class MyController {
    @RequestMapping("/testEntity")
    public MyEntity testEntity(){
        return new MyEntity();
    }

    @GetMapping("/test")
    //@ApiImplicitParam(name = "m" , value = "m参数描述" , required = false , paramType = "字符串类型" , dataType = "名值对（数据类型）")
    @ApiImplicitParams(value = {
            @ApiImplicitParam(name = "m" , value = "m参数描述" , required = false , paramType = "字符串" , dataType = "名值对"),
            @ApiImplicitParam(name = "n" , value = "n参数描述" , required = true , paramType = "字符串(String))" , dataType = "名值对（数据类型）")
    })
    public String test(String m,String n){
        return "true";
    }

    @PostMapping("/post")
    @ApiOperation(value = "post方法，执行数据新增操作",notes = "Swagger学习使用-处理POST请求方法")   //value在菜单中，notes在描述中
    public String post(@ApiParam(name = "用户名（test1）" , value = "新增用户时提供的用户名" , required = true) String test1,
                       @ApiParam(name = "密码（test2）" , value = "新增用户时提供的密码" , required = true) String test2){
        return "post";
    }

    //ApiIgnore - 忽略，当前注解描述的方法或类型，不生产api帮助文档。
    @ApiIgnore
    @GetMapping("/get")
//    @RequestMapping(method = {RequestMethod.GET})     //约束get
    public String get(String a,String b){
        return "get";
    }

    @MyAnnotation4Swagger
    @RequestMapping("/req")
    public String req(String m){
        return "req";
    }
}
